﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;

namespace UI_SATT
{
    public partial class FrmTorneos : Form, IListadoEventos, IListadoTorneos
    {
        Form FrmEventos;
        Form FrmNuevoTorneo;
        string ImplementaEventos = "EventoService";
        string ImplementaTorneos = "TorneoService";
        ITorneoService TorneoServicio;
        IEventoService EventoServicio;

        public FrmTorneos()
        {
            InitializeComponent();
        }

        private void FrmTorneos_Load(object sender, EventArgs e)
        {
            EventoServicio = (IEventoService)AppContext.Instance.GetObject(ImplementaEventos);
            EventoServicio.Listar(this);
            TorneoServicio = (ITorneoService)AppContext.Instance.GetObject(ImplementaTorneos);
        }

        #region Miembros de IListadoEventos

        public List<string> ListaEventos
        {
            set 
            {
                if (CboListaEventos.Items.Count > 0)
                    CboListaEventos.Items.Clear();
                CboListaEventos.DataSource = value;
                CboListaEventos.SelectedIndex = -1;
            }
        }

        #endregion

        private void BtnNuevoEvento_Click(object sender, EventArgs e)
        {
            if (FrmEventos == null || FrmEventos.IsDisposed)
            {
                FrmEventos = new FrmEventos();
                if (FrmEventos.ShowDialog() == DialogResult.OK)
                    EventoServicio.Listar(this);
            }
            else
                FrmEventos.BringToFront();
        }

        #region Miembros de IListadoTorneos

        public string Evento
        {
            get { return CboListaEventos.SelectedItem.ToString(); }
        }

        public string[][] ListaTorneos
        {
            set 
            {
                if (DgvListaTorneos.ColumnCount == 0)
                {
                    DgvListaTorneos.Columns.Add("Categoria", "Categoria");
                    DgvListaTorneos.Columns.Add("Tipo", "Tipo");
                    DgvListaTorneos.Columns.Add("Sexo", "Sexo");
                    DgvListaTorneos.Columns.Add("Estado", "Estado");
                }
                if (DgvListaTorneos.Rows.Count > 0)
                    DgvListaTorneos.Rows.Clear();
                foreach (string[] Objeto in value)
                {
                    DgvListaTorneos.Rows.Add(Objeto);
                }
            }
        }

        #endregion

        private void CboListaEventos_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void CboListaEventos_SelectionChangeCommitted(object sender, EventArgs e)
        {
            TorneoServicio.Listar(this);
        }

        private void BtnNuevoTorneo_Click(object sender, EventArgs e)
        {
            if (FrmNuevoTorneo == null || FrmNuevoTorneo.IsDisposed)
            {
                FrmNuevoTorneo = new FrmNuevoTorneo("Nuevo");
                FrmNuevoTorneo.Show();
            }
            else
                FrmNuevoTorneo.BringToFront();
        }

        private void BtnModificarTorneo_Click(object sender, EventArgs e)
        {
            if (FrmNuevoTorneo == null || FrmNuevoTorneo.IsDisposed)
            {
                FrmNuevoTorneo = new FrmNuevoTorneo("Modificar");
                FrmNuevoTorneo.Show();
            }
            else
                FrmNuevoTorneo.BringToFront();
        }
    }
}
